
//手机号省略
export const phone = (phone) => {
	if (!phone) {
		return "-";
	}
	return phone.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2");
};

// export const nikeName = (name) => {
// 	if (!name) {
// 		return "-";
// 	}
// 	if (email(name) || mobile(name)) {
// 		return name.substr(0, 2) + "****" + name.substr(-2, 2);
// 	}
// 	return name

// };


export const addressFilter = (address) => {
	if (!address) {
		return "-";
	}
	return address.replace(/^([A-Za-z0-9]{6})[A-Za-z0-9]{30}([A-Za-z0-9]{6})$/, "$1……$2");
};


//时间去T
export const mkfsTime = (time) => {
	if (!time) {
		return "-";
	}

	return time.replace("T", " ");
};

//时间保留月日时分
export const mkfsTime2 = (time) => {
	if (!time) {
		return "-";
	}
	return time.replace("T", " ").substr(5, 5);
};

export const times = (time,arr) => {
	if (!time) {
		return "-";
	}
	if(!arr){
		return time.replace("T", " ")
	}
	return time.replace("T", " ").substr(...arr);
};


export const fingerprint = v => {
	return {
		1: 'error',
		2: 'fall',
		3: 'success',
	} [v]
}

export const bankNoStr = (time) => {
	if (!time) {
		return "-";
	}
	return time.substr(time.length - 4, 4);
};

/**
 * @method 数字格式化处理
 * @param {String} num    num接收的数字
 * @param {Number} point  point保留数字的第几位
 * @example
 console.log(tranNumber(1000,2)) // 1000
 console.log(tranNumber(26742238,2)) // 2674.22万
 console.log(tranNumber(1234787325,2)) // 12.34亿
 */
export const tranNumber = (num, point) => {
	// 将数字转换为字符串,然后通过split方法用.分隔,取到第0个
	let numStr = num.toString().split('.')[0]
	if (numStr.length < 6) { // 判断数字有多长,如果小于6,,表示10万以内的数字,让其直接显示
		return numStr;
	} else if (numStr.length >= 6 && numStr.length <= 8) { // 如果数字大于6位,小于8位,让其数字后面加单位万
		let decimal = numStr.substring(numStr.length - 4, numStr.length - 4 + point)
		// 由千位,百位组成的一个数字
		return parseFloat(parseInt(num / 10000) + '.' + decimal) + '万'
	} else if (numStr.length > 8) { // 如果数字大于8位,让其数字后面加单位亿
		let decimal = numStr.substring(numStr.length - 8, numStr.length - 8 + point);
		return parseFloat(parseInt(num / 100000000) + '.' + decimal) + '亿'
	}
}
/**
 * 小数位保留
 * @param num    //当前数
 * @param digit  //保留位数
 * @param adapt  //是否补0
 * @returns {number}
 */
export const integer = (num = 0, digit, adapt = !digit) => {
	try {
		digit = digit || 2;
		let strNum = num.toString().split(".");
		if (strNum.length == 1) {
			strNum.push('00000000000000000000000000000000000')
		} else {
			strNum[1] = strNum[1] + '00000000000000000000000000000000000';
		}
		if (adapt) {
			strNum = parseFloat(strNum[0] + '.' + strNum[1].substr(0, digit));
		} else {
			strNum = strNum[0] + '.' + strNum[1].substr(0, digit);
		}

		return strNum;
	} catch (e) {
		return 0
		console.log(e)
		//TODO handle the exception
	}
}

/**
 * @method 数字格式化处理
 * @param {String} num    num接收的数字
 * @param {Number} point  point保留数字的第几位
 * @example
 console.log(tranNumber(1000,2)) // 1000
 console.log(tranNumber(26742238,2)) // 2674.22万
 console.log(tranNumber(1234787325,2)) // 12.34亿
 */
export const tranNumber2 = (num = 0, point) => {
	// 将数字转换为字符串,然后通过split方法用.分隔,取到第0个
	let numStr = num.toString().split('.')[0]
	if (numStr.length < 4) { // 判断数字有多长,如果小于6,,表示10万以内的数字,让其直接显示
		return numStr;
	} else if (numStr.length >= 4 && numStr.length < 6) {
		let decimal = numStr.substring(numStr.length - 3, numStr.length - 3 + point)
		// 由千位,百位组成的一个数字
		return parseFloat(parseInt(num / 1000) + '.' + decimal) + '千+'
	} else if (numStr.length >= 6 && numStr.length <= 8) { // 如果数字大于6位,小于8位,让其数字后面加单位万
		let decimal = numStr.substring(numStr.length - 4, numStr.length - 4 + point)
		// 由千位,百位组成的一个数字
		return parseFloat(parseInt(num / 10000) + '.' + decimal) + '万+'
	} else if (numStr.length > 8) { // 如果数字大于8位,让其数字后面加单位亿
		let decimal = numStr.substring(numStr.length - 8, numStr.length - 8 + point);
		return parseFloat(parseInt(num / 100000000) + '.' + decimal) + '亿+'
	}
}




/**金额按千位逗号分割
 * @method formatMoney(s,type)
 * 功能：
 * @param {String} s，需要格式化的金额数值.
 * @param {Boolean} type 判断格式化后的金额是否需要小数位.
 * @callback  返回格式化后的数值字符串
 */

export const formatMoney = (number) => {
	// 数字转为字符串，并按照 .分割
	let arr = (number + '').split('.');
	let int = arr[0] + '';
	let fraction = arr[1] || '';
	// 多余的位数
	let f = int.length % 3;
	// 获取多余的位数，f可能是0， 即r可能是空字符串
	let r = int.substring(0, f);
	// 每三位添加','金额对应的字符
	for (let i = 0; i < Math.floor(int.length / 3); i++) {
		r += ',' + int.substring(f + i * 3, f + (i + 1) * 3);
	}
	// 多余的位数，上面
	if (f === 0) {
		r = r.substring(1);
	}
	// 调整部分和小数部分拼接
	return r + (!!fraction ? '.' + fraction : '');
}



/**金额万 亿级别分割
 * @method formatMoney(s,type)
 * 功能：
 * @param {String} s，需要格式化的金额数值.
 * @param {Boolean} type 判断格式化后的金额是否需要小数位.
 * @callback  返回格式化后的数值字符串
 */

export const numberFormat = (value, str = 2) => {
	var param = {};
	var k = 10000,
		sizes = ['', '万', '亿', '万亿'],
		i;
	if (value < k) {
		param.value = value
		param.unit = ''
	} else {
		i = Math.floor(Math.log(value) / Math.log(k));
		param.value = integer((value / Math.pow(k, i)), str);
		param.unit = sizes[i];
	}
	return param;
}

/**
 * @function 时间转换成几秒前、几分钟前、几小时前、几天前等格式
 * @param {date} dateStr 
 */
export function getDateDiff(dateStr) {
	var publishTime = Date.parse(dateStr),
		d_seconds,
		d_minutes,
		d_hours,
		d_days,
		timeNow = parseInt(new Date().getTime() / 1000),
		d,
		date = new Date(publishTime),
		Y = date.getFullYear(),
		M = date.getMonth() + 1,
		D = date.getDate(),
		H = date.getHours(),
		m = date.getMinutes(),
		s = date.getSeconds();
	//小于10的在前面补0
	if (M < 10) {
		M = "0" + M;
	}
	if (D < 10) {
		D = "0" + D;
	}
	if (H < 10) {
		H = "0" + H;
	}
	if (m < 10) {
		m = "0" + m;
	}
	if (s < 10) {
		s = "0" + s;
	}

	d = timeNow - publishTime / 1000;
	d_days = parseInt(d / 86400);
	d_hours = parseInt(d / 3600);
	d_minutes = parseInt(d / 60);
	d_seconds = parseInt(d);

	if (d_days > 0 && d_days < 10) {
		return d_days + "天前";
	} else if (d_days <= 0 && d_hours > 0) {
		return d_hours + "小时前";
	} else if (d_hours <= 0 && d_minutes > 0) {
		return d_minutes + "分钟前";
	} else if (d_seconds < 60) {
		if (d_seconds <= 0) {
			return "刚刚发表";
		} else {
			return d_seconds + "秒前";
		}
	} else if (d_days >= 10 && d_days < 30) {
		//大于10天小于30天 显示 XX-XX XX:XX
		return M + "-" + D + " " + H + ":" + m;
	} else if (d_days >= 30) {
		return Y + "-" + M + "-" + D + " " + H + ":" + m;
	}
}